package ReefStats;

use strict;
use warnings;

use Catalyst::Runtime '5.70';

# Set flags and add plugins for the application
#
#         -Debug: activates the debug mode for very useful log messages
#   ConfigLoader: will load the configuration from a YAML file in the
#                 application's home directory
# Static::Simple: will serve static files from the application's root
#                 directory

use Catalyst qw/
  -Debug
  ConfigLoader
  Static::Simple
  Session
  Session::State::Cookie
  Session::Store::FastMmap
  Authentication
  Authentication::Store::DBIC
  Authentication::Credential::Password
  Authorization::Roles
  Authorization::ACL
  /;

our $VERSION = '0.01';

# Configure the application.
#
# Note that settings in reefstats.yml (or other external
# configuration file that you set up manually) take precedence
# over this when using ConfigLoader. Thus configuration
# details given here can function as a default configuration,
# with a external configuration file acting as an override for
# local deployment.

__PACKAGE__->config(
    name       => 'ReefStats',
    session    => { flash_to_stash => 1 },
    'View::GD' => {
        gd_image_type         => 'png',
        gd_image_content_type => 'images/png',
    },
);

__PACKAGE__->config->{authentication}{dbic} = {
    user_class     => 'ReefStatsDB::Users',
    user_field     => 'email_address',
    password_field => 'password',
    password_type  => 'clear',
};

__PACKAGE__->config->{authorization}{dbic} = {
    role_class           => 'ReefStatsDB::Roles',
    role_field           => 'role',
    role_rel             => 'map_user_role',
    user_role_user_field => 'user_id',
};

# Start the application
__PACKAGE__->setup;

__PACKAGE__->allow_access_if( '/main',
    [qw(administrator domain_administrator standard_user)] );
__PACKAGE__->allow_access($_) for qw(
  /index
  /login
  /access_denied
  /users/request_reset_password
  /users/do_reset_password
  /graph
);

1;

__END__

=head1 NAME

ReefStats - Catalyst based application

=head1 SYNOPSIS

    script/reefstats_server.pl

=head1 DESCRIPTION

[enter your description here]

=head1 SEE ALSO

L<ReefStats::Controller::Root>, L<Catalyst>

=head1 AUTHOR

Joshua McAdams

=head1 LICENSE

This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut
